package com.afei.mybatis.mapper;

import com.afei.mybatis.pojo.Emp;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 解决字段名和属性名不一致的情况：
 * a>为字段名起别名，保持和属性名的一致
 * b>设置全局配置，将_自动映射为驼峰
 * <setting name="mapUnderscoreToCamelCase" value="true"/>
 * c>通过resultMap设置自定义的映射关系
 *
 * 处理多对一的映射关系：
 * a>级联属性赋值
 * b>association
 * c>分步查询
 * select：设置分步查询，查询某个属性的值的sql的标识（namespace.sqlId或接口的全类名.方法名）
 * column：将sql以及查询结果中的某个字段设置为分步查询的条件
 * fetchType:当开启全局的延迟加载之后，可以通过此属性手动控制延迟加载的效果
 * fetchType="lazy|eager"
 *
 *
 * 处理一对多的映射关系
 * a>collection
 *  collection:处理一对多的映射关系
 *  ofType:表示该属性所对应的集合中存储数据的类型
 * b>分步查询
 */
public interface EmpMapper {
    /**
     * 查询所有员工
     */
    List<Emp> getAllEmp();
    /**
     * 查询员工以及员工所对应的部门信息
     */
    Emp getEmpAndDept(@Param("eid") Integer eid);
    /**
     * 通过分步查询查询员工以及员工所对应的部门信息
     * 分步查询第一步：查询员工信息
     */
    Emp getEmpAndDeptByStepOne(@Param("eid") Integer eid);

    /**
     * 通过分步查询查询部门以及部门所对应的员工信息
     * 分步查询第二步：根据did查询员工信息
     */
    List<Emp> getDeptAndEmpByStepTwo(@Param("did") Integer did);

}
